<html xmlns="https://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="zh-CN" />
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
<title>dbmmanage - 管理DBM格式的用户认证文件 － Apache 2.2 中文手册 [金步国]</title>
<script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d286c55b63a3c54a1e43d10d4c203e75"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script>
</head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">模块索引</a> | <a href="../mod/directives.html">指令索引</a> | <a href="../faq/index.html">常见问题</a> | <a href="../glossary.html">词汇表</a> | <a href="../sitemap.html">站点导航</a></p><p class="apache">Apache HTTP Server 版本2.2</p><img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path"><a href="https://www.apache.org/">Apache</a> &gt; <a href="https://httpd.apache.org/">HTTP Server</a> &gt; <a href="https://httpd.apache.org/docs/">文档</a> &gt; <a href="../index.html">版本2.2</a> &gt; <a href="index.html">支持程序</a></div>

<div id="translation-info">　　 <a href="../translator_announcement.html#thanks">致谢</a> | 本篇译者：<a href="../../../index.html">金步国</a>(<a href="../../../index.html">作品集</a>) | 本页最后更新：2006年10月20日</div>
<div id="page-content"><div id="preamble"><h1>dbmmanage - 管理DBM格式的用户认证文件</h1>


    <p><code>dbmmanage</code>建立和更新存储用户名和密码的DBM格式的文件，以用于<code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code>对HTTP用户进行基本认证。Apache HTTP服务器上的有效资源可以被限制为仅允许由<code>dbmmanage</code>建立的文件中的用户所访问。此程序仅用于用户名是存储在一个DBM文件中的情况下，如果使用文本数据库，请参见<code class="program"><a href="htpasswd.html">htpasswd</a></code> 。</p>

    <p>本手册页仅列出命令行参数，配置用户认证的相关信息请参见<code class="program"><a href="../howto/auth.html">认证、授权、访问控制</a></code>文档。</p>
</div>
	<div class="top"><a href="dbmmanage.html#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="synopsis" id="synopsis">语法</a></h2>
    <p><code><strong>dbmmanage</strong> [ <var>encoding</var> ]
    <var>filename</var> add|adduser|check|delete|update
    <var>username</var>
    [ <var>encpasswd</var>
      [ <var>group</var>[,<var>group</var>...]
        [ <var>comment</var> ] ] ]</code></p>

    <p><code><strong>dbmmanage</strong> <var>filename</var>
    view [ <var>username</var> ]</code></p>

    <p><code><strong>dbmmanage</strong> <var>filename</var> import</code></p>
</div><div class="top"><a href="dbmmanage.html#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="options" id="options">选项</a></h2>
    <dl>
    <dt><code><var>filename</var></code></dt>
    <dd>DBM格式文件的文件名。一般不带 <code>.db</code>, <code>.pag</code>, <code>.dir</code> 后缀。</dd>

    <dt><code><var>username</var></code></dt>
    <dd>操作所针对的用户。<var>username</var>中不能有冒号(<code>:</code>)。</dd>

    <dt><code><var>encpasswd</var></code></dt>
    <dd>这是已经加密的密码，用于<code>update</code>和<code>add</code>命令。使用一个连字符(<code>-</code>)可以显示输入密码的提示，然后输入。另外，在用于<code>update</code>命令时，使用一个句号(<code>.</code>)可以保持原有密码不变。</dd>

    <dt><code><var>group</var></code></dt>
    <dd>用户所属的组名，组名中不能有冒号(<code>:</code>)。如果不希望指定该用户所属的组，可以使用一个连字符(<code>-</code>)，但是需要填写<var>comment</var>项。另外，在用于<code>update</code>命令时，使用一个句号(<code>.</code>)可以保持原来所属的组不变。</dd>

    <dt><code><var>comment</var></code></dt>
    <dd>这是对该用户的说明，如真实姓名、邮件地址之类。服务器本身并不使用此信息。</dd>
    </dl>

    <h3><a name="options.encodings" id="options.encodings">编码</a></h3>
      <dl>
      <dt><code>-d</code></dt>
      <dd>crypt 加密(在Windows和Netware以外平台上的默认值)</dd>

      <dt><code>-m</code></dt>
      <dd>MD5 加密(在Windows和Netware平台上的默认值)</dd>

      <dt><code>-s</code></dt>
      <dd>SHA1 加密</dd>

      <dt><code>-p</code></dt>
      <dd>纯文本(<em>不推荐</em>)</dd>
      </dl>


    <h3><a name="options.commands" id="options.commands">命令</a></h3>
      <dl>
      <dt><code>add</code></dt>
      <dd>在<var>filename</var>中增加一个包含了<var>username</var>和已加密密码<var>encpasswd</var>的项。
      <div class="example"><p><code>dbmmanage passwords.dat add rbowen foKntnEF3KSXA</code></p></div>
      </dd>

      <dt><code>adduser</code></dt>
      <dd>要求输入密码，然后在<var>filename</var>中增加一个<var>username</var>项。
      <div class="example"><p><code>dbmmanage passwords.dat adduser krietz</code></p></div>
      </dd>

      <dt><code>check</code></dt>
      <dd>要求输入密码，然后检查<var>filename</var>中是否存在<var>username</var>并且其密码与输入的相同。
      <div class="example"><p><code>dbmmanage passwords.dat check rbowen</code></p></div>
      </dd>

      <dt><code>delete</code></dt>
      <dd>在<var>filename</var>中删除<var>username</var>项。
      <div class="example"><p><code>dbmmanage passwords.dat delete rbowen</code></p></div>
      </dd>

      <dt><code>import</code></dt>
      <dd>从<code>STDIN</code>读取 <code><var>username</var>:<var>password</var></code> 的信息(每行一对)，然后增加到<var>filename</var>中。其中的密码必须是已加密的。</dd>

      <dt><code>update</code></dt>
      <dd>类似<code>adduser</code>命令，但是它可以确认<var>username</var>已经存在于<var>filename</var>中。
      <div class="example"><p><code>dbmmanage passwords.dat update rbowen</code></p></div>
      </dd>

      <dt><code>view</code></dt>
      <dd>仅显示DBM文件的内容。如果指定了<var>username</var>则仅显示该用户的信息。
      <div class="example"><p><code>dbmmanage passwords.dat view</code></p></div>
      </dd>
      </dl>

</div><div class="top"><a href="dbmmanage.html#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="bugs" id="bugs">Bugs</a></h2>
    <p>注意，实际上存在有许多不同的DBM文件格式，你的系统中也可能存在不止一种的支持库，常见的有SDBM, NDBM, GDBM, Berkeley DB 2 。麻烦的是，所有这些库都使用了不同的文件格式，因而你必须确保<var>filename</var>所采用的格式能够为<code>dbmmanage</code>所接受。目前，<code>dbmmanage</code>无法自己确定所查找的文件的DBM类型。如果使用了错误的格式，则简单返回nothing ，或者建立一个不同名称的不同的DBM文件，而最坏的情况是，在试图写入这个文件时，可能会破坏该DBM文件。</p>

    <p><code>dbmmanage</code>有一个DBM格式参数选择列表，在程序前部由 <code>@AnyDBM::ISA</code> 数组定义。由于我们更喜欢 Berkeley DB 2 格式，<code>dbmmanage</code>查找系统库的顺序是：Berkeley DB 2, NDBM, GDBM, SDBM 。<code>dbmmanage</code>会使用第一个找到的库来处理所有的DBM文件操作。此顺序与perl中标准的 <code>@AnyDBM::ISA</code> 的顺序略微不同，所以，如果要使用任何其他工具来管理DBM文件，则必须确保该工具是按此顺序处理的。在用其他语言比如C的程序来处理这些文件时，也要考虑这一点。</p>

    <p>在大多数Unix系统中，都可以用<code>file</code>程序来查看DBM文件的格式。</p>
</div></div>
<div id="footer">
<p class="apache">本文允许自由的转载、引用、再分发，但必须保留译者署名并注明出处；详见：<a href="../translator_announcement.html#announcement">版权声明</a>。</p>
<p class="menu"><a href="../mod/index.html">模块索引</a> | <a href="../mod/directives.html">指令索引</a> | <a href="../faq/index.html">常见问题</a> | <a href="../glossary.html">词汇表</a> | <a href="../sitemap.html">站点导航</a></p></div>
</body></html>
